home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN32.PAK / RICHOLE.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  174 lines

  1. #ifndef _RICHOLE_
  2. #define _RICHOLE_
  3. #pragma option -b
  4.  
  5. /*
  6.  *    RICHOLE.H
  7.  *
  8.  *    Purpose:
  9.  *        OLE Extensions to the Rich Text Editor
  10.  *
  11.  *    Copyright (c) 1985-1996, Microsoft Corporation
  12.  */
  13.  
  14. #if defined (__BORLANDC__)
  15. #pragma option -b.
  16.   #include <pshpack8.h>
  17. #pragma option -b
  18. #endif
  19.  
  20. // Structure passed to GetObject and InsertObject
  21. typedef struct _reobject
  22. {
  23.     DWORD            cbStruct;            // Size of structure
  24.     LONG            cp;                    // Character position of object
  25.     CLSID            clsid;                // Class ID of object
  26.     LPOLEOBJECT        poleobj;            // OLE object interface
  27.     LPSTORAGE        pstg;                // Associated storage interface
  28.     LPOLECLIENTSITE    polesite;            // Associated client site interface
  29.     SIZEL            sizel;                // Size of object (may be 0,0)
  30.     DWORD            dvaspect;            // Display aspect to use
  31.     DWORD            dwFlags;            // Object status flags
  32.     DWORD            dwUser;                // Dword for user's use
  33. } REOBJECT;
  34.  
  35. // Flags to specify which interfaces should be returned in the structure above
  36. #define REO_GETOBJ_NO_INTERFACES    (0x00000000L)
  37. #define REO_GETOBJ_POLEOBJ            (0x00000001L)
  38. #define REO_GETOBJ_PSTG                (0x00000002L)
  39. #define REO_GETOBJ_POLESITE            (0x00000004L)
  40. #define REO_GETOBJ_ALL_INTERFACES    (0x00000007L)
  41.  
  42. // Place object at selection
  43. #define REO_CP_SELECTION ((ULONG) -1L)
  44.  
  45. // Use character position to specify object instead of index
  46. #define REO_IOB_SELECTION ((ULONG) -1L)
  47. #define REO_IOB_USE_CP ((ULONG) -2L)
  48.  
  49. // Object flags
  50. #define REO_NULL            (0x00000000L)    // No flags
  51. #define REO_READWRITEMASK    (0x0000003FL)    // Mask out RO bits
  52. #define REO_DONTNEEDPALETTE    (0x00000020L)    // Object doesn't need palette
  53. #define REO_BLANK            (0x00000010L)    // Object is blank
  54. #define REO_DYNAMICSIZE        (0x00000008L)    // Object defines size always
  55. #define REO_INVERTEDSELECT    (0x00000004L)    // Object drawn all inverted if sel
  56. #define REO_BELOWBASELINE    (0x00000002L)    // Object sits below the baseline
  57. #define REO_RESIZABLE        (0x00000001L)    // Object may be resized
  58. #define REO_LINK            (0x80000000L)    // Object is a link (RO)
  59. #define REO_STATIC            (0x40000000L)    // Object is static (RO)
  60. #define REO_SELECTED        (0x08000000L)    // Object selected (RO)
  61. #define REO_OPEN            (0x04000000L)    // Object open in its server (RO)
  62. #define REO_INPLACEACTIVE    (0x02000000L)    // Object in place active (RO)
  63. #define REO_HILITED            (0x01000000L)    // Object is to be hilited (RO)
  64. #define REO_LINKAVAILABLE    (0x00800000L)    // Link believed available (RO)
  65. #define REO_GETMETAFILE        (0x00400000L)    // Object requires metafile (RO)
  66.  
  67. // flags for IRichEditOle::GetClipboardData(),
  68. // IRichEditOleCallback::GetClipboardData() and
  69. // IRichEditOleCallback::QueryAcceptData()
  70. #define RECO_PASTE            (0x00000000L)    // paste from clipboard
  71. #define RECO_DROP            (0x00000001L)    // drop
  72. #define RECO_COPY            (0x00000002L)    // copy to the clipboard
  73. #define RECO_CUT            (0x00000003L)    // cut to the clipboard
  74. #define RECO_DRAG            (0x00000004L)    // drag
  75.  
  76. /*
  77.  *    IRichEditOle
  78.  *
  79.  *    Purpose:
  80.  *        Interface used by the client of RichEdit to perform OLE-related
  81.  *        operations.
  82.  *
  83.  *    //$ REVIEW:
  84.  *        The methods herein may just want to be regular Windows messages.
  85.  */
  86. #undef INTERFACE
  87. #define INTERFACE   IRichEditOle
  88.  
  89. DECLARE_INTERFACE_(IRichEditOle, IUnknown)
  90. {
  91.     // *** IUnknown methods ***
  92.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
  93.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  94.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  95.  
  96.     // *** IRichEditOle methods ***
  97.     STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR * lplpolesite) PURE;
  98.     STDMETHOD_(LONG,GetObjectCount) (THIS) PURE;
  99.     STDMETHOD_(LONG,GetLinkCount) (THIS) PURE;
  100.     STDMETHOD(GetObject) (THIS_ LONG iob, REOBJECT FAR * lpreobject,
  101.                           DWORD dwFlags) PURE;
  102.     STDMETHOD(InsertObject) (THIS_ REOBJECT FAR * lpreobject) PURE;
  103.     STDMETHOD(ConvertObject) (THIS_ LONG iob, REFCLSID rclsidNew,
  104.                               LPCSTR lpstrUserTypeNew) PURE;
  105.     STDMETHOD(ActivateAs) (THIS_ REFCLSID rclsid, REFCLSID rclsidAs) PURE;
  106.     STDMETHOD(SetHostNames) (THIS_ LPCSTR lpstrContainerApp,
  107.                              LPCSTR lpstrContainerObj) PURE;
  108.     STDMETHOD(SetLinkAvailable) (THIS_ LONG iob, BOOL fAvailable) PURE;
  109.     STDMETHOD(SetDvaspect) (THIS_ LONG iob, DWORD dvaspect) PURE;
  110.     STDMETHOD(HandsOffStorage) (THIS_ LONG iob) PURE;
  111.     STDMETHOD(SaveCompleted) (THIS_ LONG iob, LPSTORAGE lpstg) PURE;
  112.     STDMETHOD(InPlaceDeactivate) (THIS) PURE;
  113.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  114.     STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
  115.                                     LPDATAOBJECT FAR * lplpdataobj) PURE;
  116.     STDMETHOD(ImportDataObject) (THIS_ LPDATAOBJECT lpdataobj,
  117.                                     CLIPFORMAT cf, HGLOBAL hMetaPict) PURE;
  118. };
  119. typedef         IRichEditOle FAR * LPRICHEDITOLE;
  120.  
  121. /*
  122.  *    IRichEditOleCallback
  123.  *
  124.  *    Purpose:
  125.  *        Interface used by the RichEdit to get OLE-related stuff from the
  126.  *        application using RichEdit.
  127.  */
  128. #undef INTERFACE
  129. #define INTERFACE   IRichEditOleCallback
  130.  
  131. DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown)
  132. {
  133.     // *** IUnknown methods ***
  134.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
  135.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  136.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  137.  
  138.     // *** IRichEditOleCallback methods ***
  139.     STDMETHOD(GetNewStorage) (THIS_ LPSTORAGE FAR * lplpstg) PURE;
  140.     STDMETHOD(GetInPlaceContext) (THIS_ LPOLEINPLACEFRAME FAR * lplpFrame,
  141.                                   LPOLEINPLACEUIWINDOW FAR * lplpDoc,
  142.                                   LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE;
  143.     STDMETHOD(ShowContainerUI) (THIS_ BOOL fShow) PURE;
  144.     STDMETHOD(QueryInsertObject) (THIS_ LPCLSID lpclsid, LPSTORAGE lpstg,
  145.                                     LONG cp) PURE;
  146.     STDMETHOD(DeleteObject) (THIS_ LPOLEOBJECT lpoleobj) PURE;
  147.     STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT lpdataobj,
  148.                                 CLIPFORMAT FAR * lpcfFormat, DWORD reco,
  149.                                 BOOL fReally, HGLOBAL hMetaPict) PURE;
  150.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  151.     STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
  152.                                     LPDATAOBJECT FAR * lplpdataobj) PURE;
  153.     STDMETHOD(GetDragDropEffect) (THIS_ BOOL fDrag, DWORD grfKeyState,
  154.                                     LPDWORD pdwEffect) PURE;
  155.     STDMETHOD(GetContextMenu) (THIS_ WORD seltype, LPOLEOBJECT lpoleobj,
  156.                                     CHARRANGE FAR * lpchrg,
  157.                                     HMENU FAR * lphmenu) PURE;
  158. };
  159. typedef         IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK;
  160.  
  161. #ifndef MAC
  162. // RichEdit interface GUIDs
  163. DEFINE_GUID(IID_IRichEditOle,         0x00020D00, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
  164. DEFINE_GUID(IID_IRichEditOleCallback, 0x00020D03, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
  165. #endif // !MAC
  166. #if defined (__BORLANDC__)
  167. #pragma option -b.
  168.   #include <poppack.h>
  169. #pragma option -b
  170. #endif
  171.  
  172. #pragma option -b.
  173. #endif // _RICHOLE_
  174.